/**
 * 行政班级服务接口，提供行政班级相关的操作
 */
package com.example.stmp.Service.AdministrativeClass;

import com.example.stmp.dto.AdministrativeClassDTO;
import org.springframework.stereotype.Service;
import java.util.List;

/**
 * 行政班级服务接口，定义了对行政班级信息进行增删改查操作的方法
 */
@Service
public interface AdministrativeClassService {
    /**
     * 添加一个行政班级
     *
     * @param dto 行政班级的数据传输对象，包含要添加的行政班级的信息
     * @return 影响的行数，表示添加操作是否成功
     */
    int addAdministrativeClass(AdministrativeClassDTO dto);

    /**
     * 批量添加行政班级
     *
     * @param dtoList 包含多个行政班级信息的数据传输对象列表
     * @return 影响的行数，表示添加操作是否成功
     */
    int addAdministrativeClassBatch(List<AdministrativeClassDTO> dtoList);

    /**
     * 根据行政班级ID删除行政班级
     *
     * @param acId 行政班级的唯一标识符
     * @return 影响的行数，表示删除操作是否成功
     */
    int deleteAdministrativeClassById(String acId);

    /**
     * 更新行政班级信息
     *
     * @param dto 包含更新后的行政班级信息的数据传输对象
     * @return 影响的行数，表示更新操作是否成功
     */
    int updateAdministrativeClass(AdministrativeClassDTO dto);

    /**
     * 根据行政班级ID获取行政班级信息
     *
     * @param acId 行政班级的唯一标识符
     * @return 包含行政班级信息的数据传输对象
     */
    AdministrativeClassDTO getAdministrativeClassById(String acId);

    /**
     * 查询行政班级信息，可以根据班级名称、辅导员和专业名称进行查询
     *
     * @param acName 班级名称
     * @param counselor 辅导员
     * @param majorName 专业名称
     * @return 包含查询结果的行政班级信息列表
     */
    List<AdministrativeClassDTO> queryAdministrativeClass(String acName, String counselor, String majorName);
}
